﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DTO_MechSys;
using BLL_MechSys;

namespace FORMS_MechSys
{
    public partial class frmMensagemCliente : Form
    {
        DTOMensagem dtoMensagem = new DTOMensagem();
        BLLMensagem bllMensagem = new BLLMensagem();

        DTOCor dtoCorFundo = new DTOCor();
        DTOCor dtoCorLetra = new DTOCor();
        DTOCor dtoCorPrincipal = new DTOCor();
        DTOCor dtoCorGrid = new DTOCor();
        BLLCor bllCor = new BLLCor();

        public frmMensagemCliente()
        {
            InitializeComponent();
            SetColors();
            PopulaGrid();
        }

        private void SetColors()
        {
            dtoCorFundo = bllCor.Buscar("Fundo");
            dtoCorGrid = bllCor.Buscar("DataGrid");
            dtoCorLetra = bllCor.Buscar("Letra");
            dtoCorPrincipal = bllCor.Buscar("Principal");

            tlpCrud.BackColor = btnBuscarCliente.BackColor = tlpMenuStripCenter.BackColor = tlpMenuStripLeft.BackColor =
                tlpMenuStripRigth.BackColor = tlpMsg.BackColor = btnCancelar.BackColor = btnExcluir.BackColor =
                btnNovo.BackColor = btnSalvar.BackColor = button1.BackColor = dtoCorPrincipal.Cor;
            dgvMensagens.BackgroundColor = dtoCorGrid.Cor;
            btnSalvar.ForeColor = btnNovo.ForeColor = btnExcluir.ForeColor = btnCancelar.ForeColor = btnBuscarCliente.ForeColor = label4.ForeColor = 
                label1.ForeColor = label2.ForeColor = label21.ForeColor = label3.ForeColor = button1.ForeColor = dtoCorLetra.Cor;
            this.BackColor = tlpMenuStrip.BackColor = tlpPrincipal.BackColor = dtoCorFundo.Cor;
        }

        private void PopulaGrid()
        {
            dgvMensagens.DataSource = bllMensagem.BuscarMensagemsCadastrados();
        }

        private void Limpar()
        {
            txtCliente.Clear();
            txtMensagem.Clear();
            txtTitulo.Clear();
            BLLUtilitarios.clienteNome = "";
            BLLUtilitarios.clienteID = 0;
        }

        private void btnBuscarCliente_Click(object sender, EventArgs e)
        {
            new frmClienteSelecionar().ShowDialog();
            txtCliente.Text = BLLUtilitarios.clienteNome;
        }

        private void btnNovo_Click(object sender, EventArgs e)
        {
            Limpar();
            tlpMsg.Enabled = true;
            btnCancelar.Enabled = true;
            btnSalvar.Enabled = true;
            btnExcluir.Enabled = false;
            btnNovo.Enabled = false;
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            Limpar();
            btnCancelar.Enabled = false;
            btnSalvar.Enabled = false;
            tlpMsg.Enabled = false;
            btnNovo.Enabled = true;
            if (dgvMensagens.RowCount > 0)
                btnExcluir.Enabled = true;
        }

        private void btnSalvar_Click(object sender, EventArgs e)
        {
            dtoMensagem.ClienteID = BLLUtilitarios.clienteID;
            if (BLLUtilitarios.FuncionarioLogadoID != 0)
            {
                DTOFuncionario dtoFuncionario = new BLLFuncionario().PesquisarFuncionarios("", BLLUtilitarios.FuncionarioLogadoID)[0];
                dtoMensagem.Remetente = dtoFuncionario.Nome + " " + dtoFuncionario.Sobrenome;
            }
            else
                dtoMensagem.Remetente = BLLUtilitarios.FuncionarioLogado;
            dtoMensagem.Assunto = textBox1.Text;
            dtoMensagem.Texto = txtMensagem.Text;
            dtoMensagem.Titulo = txtTitulo.Text;
            if (dtoMensagem.ClienteID != 0 && !string.IsNullOrWhiteSpace(dtoMensagem.Titulo) && !string.IsNullOrWhiteSpace(dtoMensagem.Texto))
            {
                bllMensagem.Inserir(dtoMensagem);
                btnCancelar.Enabled = false;
                btnSalvar.Enabled = false;
                btnNovo.Enabled = true;
                if (dgvMensagens.RowCount > 0)
                    btnExcluir.Enabled = true;
                PopulaGrid();
                tlpMsg.Enabled = false;
                Limpar();
            }
            else
                new frmMessageBox().Show("Existe algum campo obrigatório em branco.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        private void btnExcluir_Click(object sender, EventArgs e)
        {
            if (dgvMensagens.CurrentCellAddress.Y != -1)
            {
                int mensagemID = Int32.Parse(dgvMensagens.Rows[dgvMensagens.CurrentCellAddress.Y].Cells[0].Value.ToString());
                if (new frmMessageBox().Show("Tem certeza que deseja excluir esta mensagem?", "Aviso de Exclusão", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning) == System.Windows.Forms.DialogResult.Yes)
                {
                    bllMensagem.Excluir(mensagemID);
                    PopulaGrid();
                    btnCancelar.Enabled = false;
                    btnSalvar.Enabled = false;
                    btnNovo.Enabled = true;
                    if (dgvMensagens.RowCount > 0)
                        btnExcluir.Enabled = true;
                    tlpMsg.Enabled = false;
                    Limpar();
                }
            }
        }

        private void dgvMensagens_DataSourceChanged(object sender, EventArgs e)
        {
            if (dgvMensagens.Rows.Count > 0)
                btnExcluir.Enabled = true;
            else
                btnExcluir.Enabled = false;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
